home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / program / esyrxv30.lha / EasyRexx / Includes / Modula-2 / EasyREXX.def < prev    next >
Text File  |  1995-11-05  |  7KB  |  148 lines

  1. (*
  2.  *      File:         EasyRexx.h
  3.  *      Description:  Headerfile for the easyrexx.library
  4.  *
  5.  *      (C) 1994,1995 Ketil Hunn
  6.  *
  7.  *      Translation for Benchmark M2 110295 - Tom Breeden, tmb@virginia.edu
  8.  *)
  9.  
  10. DEFINITION MODULE EasyRexx;
  11.  
  12. FROM SYSTEM IMPORT ADDRESS, BYTE;
  13.  
  14. (*** PRIVATE INCLUDES ****************************************************************)
  15. FROM Libraries   IMPORT LibraryPtr;
  16. FROM Ports       IMPORT MsgPortPtr;
  17. FROM Tasks       IMPORT SignalSet;
  18. FROM Utility     IMPORT Tag, TagItemPtr, TagUser;
  19.  
  20. (*** DEFINES *************************************************************************)
  21. CONST EasyRexxName        = "easyrexx.library";
  22.       EasyRexxVersion     = 3D;
  23.  
  24. VAR   EasyRexxBase        :LibraryPtr;
  25.  
  26. TYPE  CharPointer = POINTER TO CHAR;
  27.  
  28.       ARexxContext;
  29.       ARexxCommandShell;
  30.  
  31. CONST NULLARexxContext = ARexxContext(NIL);
  32.  
  33. TYPE ARexxCommandTable = RECORD
  34.                            id            :LONGINT;       (* NOTE: do not use an id of 0 *)
  35.                            command,
  36.                            cmdtemplate   :CharPointer;
  37.                            userdata      :ADDRESS;
  38.                          END;
  39.      ARexxCommandTablePtr = POINTER TO ARexxCommandTable;
  40.  
  41.  
  42. (* V3.0 *****************************************************************************)
  43.  
  44. TYPE ARexxMacro;
  45.  
  46.      ARexxFunc = PROCEDURE(ARexxContext):INTEGER;
  47.  
  48. CONST NULLARexxMacro = ARexxMacro(NIL);
  49.  
  50. CONST ERRecordPointerWidth  = 16;
  51.       ERRecordPointerHeight = 17;
  52.       ERRecordPointerOffset = -1;
  53.  
  54. (***** TAGS *************************************************************************)
  55.  
  56. CONST ERTagBase             = TagUser;
  57.       ERPortname            = ERTagBase+Tag(1);  (* Name of AREXX port                   *)
  58.       ERCommandTable        = ERTagBase+Tag(2);  (* Table of supported AREXX commands    *)
  59.       ERReturnCode          = ERTagBase+Tag(3);  (* Primary result (return code)         *)
  60.       ERResult              = ERReturnCode;      (* Alias for ERReturnCode               *)
  61.       ERResult1             = ERReturnCode;      (* Alias for ERReturnCode               *)
  62.       ERResult2             = ERTagBase+Tag(4);  (* Secondary result (string)            *)
  63.       ERPort                = ERTagBase+Tag(5);  (* Use already created port             *)
  64.       ERResultString        = ERTagBase+Tag(6);  (* Secondary result (string)            *)
  65.       ERResultLong          = ERTagBase+Tag(7);  (* Secondary result (long)              *)
  66.  
  67. (***** EASYREXX V2 TAGS ***********************************************************)
  68. CONST ERAsynch              = ERTagBase+Tag(8);  (* Send ARexx command asyncronously     *)
  69.       ERContext             = ERTagBase+Tag(9);  (* Pointer to an ARexxContext           *)
  70.       ERAuthor              = ERTagBase+Tag(10); (* Pointer to an author string          *)
  71.       ERCopyright           = ERTagBase+Tag(11); (* Pointer to an copyright string       *)
  72.       ERVersion             = ERTagBase+Tag(12); (* Pointer to an version string         *)
  73.       ERPrompt              = ERTagBase+Tag(13); (* Pointer to a prompt string           *)
  74.       ERClose               = ERTagBase+Tag(14); (* Close CommandShell                   *)
  75.       ERErrorMessage        = ERTagBase+Tag(15); (* Pointer to an error message          *)
  76.       ERFlags               = ERTagBase+Tag(16); (* LONG of flags                        *)
  77.       ERFont                = ERTagBase+Tag(17); (* Pointer to a struct TextFont *       *)
  78.  
  79. (***** EASYREXX V3 TAGS ***********************************************************)
  80. CONST ERMacro               = ERTagBase+Tag(18); (* Pointer to ARexxMacro                *)
  81.       ERMacroFile           = ERTagBase+Tag(19); (* Pointer to a macrofile               *)
  82.       ERRecord              = ERTagBase+Tag(20); (* Really record macro command          *)
  83.       ERFile                = ERTagBase+Tag(21); (* Send file                            *)
  84.       ERString              = ERTagBase+Tag(22); (* Send string                          *)
  85.       ERCommand             = ERTagBase+Tag(23); (* Pointer to commandstring             *)
  86.       ERArguments           = ERTagBase+Tag(24); (* Var-array of arguments               *)
  87.       ERArgument            = ERArguments;
  88.       ERArgumentsLength     = ERTagBase+Tag(25); (* CharLength of command+arguments      *)
  89.       ERArgumentLength      = ERArgumentsLength;
  90.  
  91. (************************************************************************************)
  92.  
  93. (*** EASYREXX "MACROS" ***************************************************************)
  94.  
  95.  PROCEDURE ERShellSignals(context:ARexxContext):SignalSet;
  96.  PROCEDURE ERSignals(context:ARexxContext):SignalSet;
  97.  PROCEDURE ERSignal(context:ARexxContext):SignalSet;
  98.  
  99.  PROCEDURE ERSafeToQuit(context:ARexxContext):BOOLEAN;
  100.  PROCEDURE ERSetSignals(context:ARexxContext; s:SignalSet);
  101.  PROCEDURE ERIsShellOpen(context:ARexxContext):BOOLEAN;
  102.  
  103.  PROCEDURE Id(context:ARexxContext):LONGINT;
  104.  PROCEDURE Port(context:ARexxContext):MsgPortPtr;
  105.  PROCEDURE Portname(context:ARexxContext; VAR nam:ARRAY OF CHAR);
  106.  PROCEDURE Table(context:ARexxContext; i:INTEGER):ARexxCommandTablePtr;
  107.  
  108.  PROCEDURE Arg(context:ARexxContext; i:INTEGER):ADDRESS;
  109.  PROCEDURE ArgNumber(context:ARexxContext; i:INTEGER):LONGINT;
  110.  PROCEDURE ArgString(context:ARexxContext; i:INTEGER):CharPointer;
  111.  PROCEDURE ArgBool(context:ARexxContext; i:INTEGER):BOOLEAN;
  112.  
  113.  PROCEDURE GetRC(context:ARexxContext):LONGINT;
  114.  PROCEDURE GetResult1(context:ARexxContext):LONGINT;
  115.  PROCEDURE GetResult2(context:ARexxContext):LONGINT;
  116.  
  117.  PROCEDURE TableEnd(VAR entry:ARexxCommandTable);
  118.  
  119.  PROCEDURE CreateERRecordPointer():ADDRESS;   (*V3*)
  120.  PROCEDURE FreeERRecordPointer();             (*V3*)
  121.  
  122. (*** PROTOTYPES **********************************************************************)
  123.  
  124.  PROCEDURE FreeARexxContext(context:ARexxContext);
  125.  PROCEDURE AllocARexxContextA(taglist:TagItemPtr):ARexxContext;
  126.  PROCEDURE GetARexxMsg(context:ARexxContext):BYTE;
  127.  PROCEDURE SendARexxCommandA(command:CharPointer; taglist:TagItemPtr):LONGINT;
  128.  PROCEDURE ReplyARexxMsgA(context:ARexxContext; taglist:TagItemPtr);
  129.  
  130. (*** PROTOTYPES V2.0 *****************************************************************)
  131.  
  132.  PROCEDURE ARexxCommandShellA(context:ARexxContext; taglist:TagItemPtr):BYTE;
  133.  
  134. (*** PROTOTYPES V3.0 *****************************************************************)
  135.  
  136.  PROCEDURE AllocARexxMacroA(taglist:TagItemPtr):ARexxMacro;
  137.  PROCEDURE IsARexxMacroEmpty(macro:ARexxMacro):BYTE;
  138.  PROCEDURE ClearARexxMacro(macro:ARexxMacro);
  139.  PROCEDURE FreeARexxMacro(macro:ARexxMacro);
  140.  PROCEDURE AddARexxMacroCommandA(macro:ARexxMacro; taglist:TagItemPtr):BYTE;
  141.  PROCEDURE WriteARexxMacroA(context:ARexxContext; macro:ARexxMacro; macroname:CharPointer;
  142.                             taglist:TagItemPtr):BYTE;
  143.  PROCEDURE RunARexxMacroA(context:ARexxContext; taglist:TagItemPtr):BYTE;
  144.  PROCEDURE CreateARexxStemA(context:ARexxContext; stemname:CharPointer;
  145.                             VAR vars:ARRAY OF CharPointer):BYTE;
  146.  
  147. END EasyRexx.
  148.